"""写一个清理日志的代码
 1、删除3天前的日志文件
 2、删除文件内容为空的日志文件
 3、如果当天的日志文件为空，不删除
"""
import time,datetime,os

class clear_log:

    def dirff_day(self,t):
        #获取当前时间
        today_time = datetime.datetime.now()
        t1 = today_time.strftime('%Y-%m-%d')
        #转化为秒级时间戳
        now_time = time.mktime(time.strptime(t1, '%Y-%m-%d'))

        #文件时间
        t3s = time.strftime('%Y-%m-%d',time.strptime(t , '%Y-%m-%d'))
        file_time = time.mktime(time.strptime(t3s, '%Y-%m-%d'))

        dirff_time = (datetime.datetime.fromtimestamp(now_time)-datetime.datetime.fromtimestamp(file_time)).days
        return dirff_time

    def get_file(self,path):
        for file in os.listdir(path):
            #获取文件目录名称
            file_path = os.path.join(path, file)
            #文件目录字符串长度并截取  截取 android apache blog ios mysql nginx python redis tomcat
            name_len = len(file_path[5:])
            #获取目录下所有文件
            for name_path in os.listdir(file_path):
                #目录名称和文件名称进行拼接得到总路径
                files_path = r"{0}\{1}".format(file_path,name_path)
                #获取文件名称时间部分的长度并调用获取时间差方法得到截至到目前文件相差的天数
                long = self.dirff_day(name_path[name_len+1:name_len+11])
                #判断相差天数是否超过3天
                if long > 3:
                    #超过3天则删除文件
                    os.remove(files_path)
                else:
                    #判断文件中有无内容
                    if os.path.getsize(files_path) == 0:
                        os.remove(files_path)


if __name__ == '__main__':
    test = clear_log()
    test.get_file(r'logs')
